package com.tucc.hello.leetcode.no801_1200.no1033;

import java.util.Arrays;

/**
 * @author tucc
 * @description todo
 * @package com.tucc.hello.leetcode
 * @date 2021/5/20
 **/
public class Solution {

    public static void main(String[] args) {
        Solution solution = new Solution();
        int a = 2, b = 3 , c = 4;
        int[] result = solution.numMovesStones(a, b ,c);
        System.out.println(result[0] + "," + result[1]);
    }

    /**
     * 三枚石子放置在数轴上，位置分别为 a，b，c。
     *
     * 每一回合，你可以从两端之一拿起一枚石子（位置最大或最小），并将其放入两端之间的任一空闲位置。形式上，假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。那么就可以从位置 x 或者是位置 z 拿起一枚石子，并将该石子移动到某一整数位置 k 处，其中 x < k < z 且 k != y。
     *
     * 当你无法进行任何移动时，即，这些石子的位置连续时，游戏结束。
     *
     * 要使游戏结束，你可以执行的最小和最大移动次数分别是多少？ 以长度为 2 的数组形式返回答案：answer = [minimum_moves, maximum_moves]
     * @param a
     * @param b
     * @param c
     * @return
     */
    public int[] numMovesStones(int a, int b, int c) {
        int[] arr = new int[]{a, b, c};
        Arrays.sort(arr);
        int dValue1 = arr[1] - arr[0], dValue2 = arr[2] - arr[1];
        return new int[]{dValue1 == 1 && dValue2 == 1 ? 0 : dValue1 <= 2 || dValue2 <= 2 ? 1 : 2,
                dValue1 + dValue2 - 2};
    }
}
